import router from '@/router'
import store from './store'

router.beforeEach(async(to, from, next) => {
  const token = store.getters.token
  const url = to.path
  const whiteList = ['/login', '404']
  // 有token,去登录页
  if (token && url === '/login') {
    next('/')
  }
  // 有token,不去登录页
  if (token && url !== '/login') {
    if (!store.state.user.userInfo.userId) {
      await store.dispatch('user/getUserInfoApi')
      // 调用路由的筛选
      const routes = await store.dispatch(
        'permission/filterRoutes',
        store.state.user.userInfo.roles.menus
      )
      // // // router 有一个方法, 可以追加路由配置 router.addRoutes(配置数组)
      router.addRoutes([
        ...routes,
        { path: '*', redirect: '/404', hidden: true }])
      next(to.path)
      return
    }
    next()
  }
  // 无token,去白名单
  if (!token && whiteList.includes(url)) {
    next()
  }
  // 无token,去其他页面
  if (!token && !whiteList.includes(url)) {
    next('/login')
  }
//   // 有无token
//   if (store.getters.token) {
//     // 如果有token,要去登录页
//     if (to.path === '/login') {
//       next('/')
//     } else {
//       // 如果有token,不要去登录页
//       next()
//     }
//   } else {
//     // 没token.可以去的页面白名单
//     const whiteList = ['/login', '404']
//     if (whiteList.indexOf(to.path) !== -1) {
//       // 放行
//       next()
//     } else {
//       // 跳回登录
//       next('/login')
//     }
//   }
})
